﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace A76使用文件流复制文件
{
    static class FileHelper
    {
    
        public static void CopyFile(string sorcesFile,string targetDirecotry)
        {
        
            //获得目标文件路径
            string fileName = Path.GetFileName(sorcesFile);
            string targetFile = Path.Combine(targetDirecotry,fileName);
            //如果目标文件已经存在先删掉
            if (File.Exists(targetFile))
            {
                File.Delete(targetFile);
            }
            //创建文件流复制文件
            using (FileStream fsRead = File.OpenRead(sorcesFile), fsWrite = File.OpenWrite(targetFile) )
            {
                byte[] array = new byte[1024*1024*20];//20M的缓冲区
                while (true)
                {
                   int length=  fsRead.Read(array,0,array.Length);//读
                    if (length==0)  break;//如果读到0字节就跳出循环
                   fsWrite.Write(array,0,length);//写
                    Console.WriteLine("已经复制{0:p}",fsRead.Position/(float)fsRead.Length);//显示进度
                }
                fsRead.Flush();
            }
        }
    }
}
